home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / nikto.nasl < prev    next >
Text File  |  2005-03-31  |  4KB  |  118 lines

  1. #TRUSTED 09d97b7737e76de3efef5acf48f6259ce67b82ff21d6f40129e92e12e979e7c5f18110c29d41ae4752437f7385f162972b1db05f4d9535b9f6a7a1584a7656baec9ee65cec2d4dd81940f98ec060db5977ce7dcc8ffd774be345f4711c26cc13899149168bd643b90d36e15681a19263c97f36e5f85889626dab70fbfdcfaca59313237d3fb94e3c54e8a2029b8e139ff8deeadef5ad0edb5310ffc11928dcc82ca6e1b9536435318fbeee8b799a3b891a19608a65f851423fbf102cd23b3b4e49e2bc21079a7eb44fc72c3a8136f8a910ee524e85350a95c3e800b68d0e97f7b85e231cb3715490570c1939bc84544e4264be6f5c3043d1308bc8520eeb2b686879fde109b3122c75d9310438022206d7a3eaf4ec41037b2ecc9a9d0c5c3539804cb4a0e17718181c645933ad00295282e20f90d45754d5ec6bc86dc8f20b5c40715537b9eac29ad0bf902c3743851562a69d7f72c6765dcf40a5032f234b0b9e89530644b19f8c060842c69e5678223eb048c79e1b47d8eacf76183ffe73e746e92e19fff81758004737456bb3f98e3cde00d3724b4961da4cdcbaa17e536c77ce1c3dc119f12e79b4f695edf3db3fb6dcaa9ad36451fbfb79e19ca14fc6bec753dd5ad9475924076bfb7baa62fdb39dca5c5a5e929e5c6f9ab14af94212e525537cc0d4c3138d7d2547cefa26a725523f28404857815f552c9374008e05ab
  2. #
  3. # This script was written by Michel Arboi <arboi@alussinan.org>
  4. #
  5. # GPL
  6. #
  7.  
  8. if ( ! defined_func("pread")) exit(0);
  9. if ( ! find_in_path("nikto.pl") ) exit(0);
  10.  
  11.  
  12. if(description)
  13. {
  14.  script_id(14260);
  15.  script_version ("1.5");
  16.  name["english"] = "Nikto (NASL wrapper)";
  17.  script_name(english:name["english"]);
  18.  
  19.  desc["english"] = "
  20. This plugin runs nikto(1) to find CGI.
  21. See the section 'plugins options' to configure it
  22.  
  23. Risk factor : None";
  24.  
  25.  script_description(english:desc["english"]);
  26.  
  27.  summary["english"] = "Find CGI with Nikto";
  28.  script_summary(english:summary["english"]);
  29.  
  30.  script_category(ACT_GATHER_INFO);
  31.  
  32.  script_copyright(english:"This script is Copyright (C) 2004 Michel Arboi");
  33.  family["english"] = "CGI abuses";
  34.  family["francais"] = "Abus de CGI";
  35.  script_family(english:family["english"], francais:family["francais"]);
  36.  
  37.  script_dependencies("find_service.nes", "httpver.nasl", "logins.nasl", "no404.nasl");
  38.  script_require_ports("Services/www", 80);
  39.  
  40. # script_add_preference(name:"Force scan all possible CGI directories",
  41. #                       type:"checkbox", value:"no");
  42.  script_add_preference(name:"Force full (generic) scan", 
  43.                       type:"checkbox", value:"no");
  44.  exit(0);
  45. }
  46.  
  47. #
  48.  
  49. if (! defined_func("pread"))
  50. {
  51.   set_kb_item(name: "/tmp/UnableToRun/14254", value: TRUE);
  52.   display("Script #14254 (nikto_wrapper) cannot run\n");
  53.   exit(0);
  54. }
  55.  
  56. user = get_kb_item("http/login");
  57. pass = get_kb_item("http/login");
  58. ids = get_kb_item("/Settings/Whisker/NIDS");
  59.  
  60. port = get_kb_item("Services/www");
  61. if (! port) port = 80;
  62. if (! get_port_state(port)) exit(0);
  63.  
  64. # Nikto will generate many false positives if the web server is broken
  65. no404 = get_kb_item("www/no404/" + port);
  66. if (no404 || no404 !~ '^[ \t\n\r]*$') exit(0);
  67.  
  68. i = 0;
  69. argv[i++] = "nikto.pl";
  70.  
  71. httpver = get_kb_item("http/"+port);
  72. if (httpver == "11")
  73. {
  74.   argv[i++] = "-vhost";
  75.   argv[i++] = get_host_name();
  76. }
  77.  
  78. argv[i++] = "-h"; argv[i++] = get_host_ip();
  79. argv[i++] = "-p"; argv[i++] = port;
  80.  
  81. encaps = get_port_transport(port);
  82. if (encaps > 1) argv[i++] = "-ssl";
  83.  
  84. #p = script_get_preference("Force scan all possible CGI directories");
  85. #if ("yes" >< p) argv[i++] = "-allcgi";
  86. p = script_get_preference("Force full (generic) scan");
  87. if ("yes" >< p) argv[i++] = "-gener";
  88.  
  89. if (idx && idx != "X")
  90. {
  91.   argv[i++] = "-evasion";
  92.   argv[i++] = ids[0];
  93. }
  94.  
  95. if (user)
  96. {
  97.   if (pass)
  98.     s = strcat(user, ':', pass);
  99.   else
  100.     s = user;
  101.   argv[i++] = "-id";
  102.   argv[i++] = s;
  103. }
  104.  
  105. r = pread(cmd: "nikto.pl", argv: argv, cd: 1);
  106. if (! r) exit(0);    # error
  107.  
  108. report = 'Here is the Nikto report:\n';
  109. foreach l (split(r))
  110. {
  111.   display(j ++, "\n");
  112.   l = ereg_replace(string: l, pattern: '^[ \t]+', replace: '');
  113.   if (l[0] == '+' || l[0] == '-' || ! match(pattern: "ERROR*", string: l))
  114.     report += l;
  115. }
  116.  
  117. security_note(port: port, data: report);
  118.